-- *****************************************************************
-- REDSTONE-IF-MIB
--
-- Redstone Communications Inc. Enterprise MIB
-- Interfaces MIB
--
-- Copyright 1998-2000 Redstone Communications, Incorporated.
-- All Rights Reserved.
-- *****************************************************************

REDSTONE-IF-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE
                FROM SNMPv2-SMI

    RowStatus
        FROM SNMPv2-TC

    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF

    ifEntry,
    ifStackHigherLayer, 
    ifStackLowerLayer
        FROM IF-MIB

    rsMgmt
                FROM REDSTONE-SMI;




rsIfMIB  MODULE-IDENTITY
        LAST-UPDATED "9901010000Z"
        ORGANIZATION "Redstone Communications, Inc."
        CONTACT-INFO
        "
        Redstone Communications, Inc.
                5 Carlisle Road
        Westford MA 01886
        USA
        Tel:    +1-978-692-1999
                Email:  mib@redstonecom.com
        "
        DESCRIPTION
                "The Generic Interfaces MIB for the 
                Redstone Communications Inc. enterprise."
        REVISION      "9901010000Z"
        DESCRIPTION
                "Actual date 01/19/2000. Added L2TP session and destination
        interface types."
        REVISION      "9801010000Z"
        DESCRIPTION
                "Initial version of this MIB module."
        ::= { rsMgmt 3 }

rsInterfaces    OBJECT IDENTIFIER   ::= { rsIfMIB 1 }
rsIf            OBJECT IDENTIFIER   ::= { rsInterfaces 1 }

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Textual conventions
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

--
-- Interface types.
--
RsIfType ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "Interface type identification for physical-, link-, and
        network-layer interfaces."
    SYNTAX      INTEGER {
                    ip(0),
                    ppp(1),
                    ds0(2),
                    ds1(3),
                    ds3(4),
                    frameRelay(5),
                    ethernet(6),
                    sonet(7),
                    sonetPath(8),
                    atm(9),
                    aal5(10),
                    atmSubInterface(11),
                    ft1(12),
                    hdlc(13),
                    ipLoopback(14),
                    ipVirtual(15),
                    frSubInterface(16),
                    pppoe(17),
                    pppoeSubInterface(18),
                    bridgedEthernet(19),
                    l2tpTunnelInterface(20),
                    l2tpSessionInterface(21),
                    mlPppLinkInterface(22),
                    slepInterface(23),
                    l2tpDestinationInterface(24),
                    mplsMajorInterface(25),
                    mplsMinorInterface(26),
                    mlPppNetworkInterface(27),
                    ethernetSubInterface(28),
                    sonetVTInterface(33)
                }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed objects
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsIfObjects     OBJECT IDENTIFIER ::= { rsIf 1 }

--
-- Generic Interfaces Table
--
rsIfTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF RsIfEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "This table contains a corresponding entry for each entry found
        in the standard Generic Interfaces MIB ifTable/ifXTable. The entries
        in this table contain supplementary generic interface characteristics.
        
        Entries in ifTable/ifXTable and in this table are created/deleted
        as a consequence of hardware detection, or of management configuration
        via standard or enterprise type-specific interface MIBs."
        ::= { rsIfObjects 1 }

rsIfEntry OBJECT-TYPE
        SYNTAX     RsIfEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "An entry representing an interface's enterprise-defined generic 
        interface characteristics."
        AUGMENTS   { ifEntry }
        ::= { rsIfTable 1 }

RsIfEntry ::= SEQUENCE {
    rsIfType
        RsIfType
}

rsIfType OBJECT-TYPE
        SYNTAX     RsIfType
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                "Identifies the type of this interface."
        ::= { rsIfEntry 1 }

--
-- Inverse Stack Table
--
-- Similar to IF-MIB ifStackTable, but with inverted indexing
-- order of upper/lower layer interfaces: ifStackTable provides
-- <upper, lower> index ordering, this table provides <lower, upper>
-- index ordering.
--
-- This table facilitates efficient bottom-up GetNext traversal of interface
-- layers, in contrast to the efficient top-down GetNext traversal afforded
-- by IF-MIB ifStackTable.
--
-- This MIB table design is derived from the IETF Internet Draft
-- draft-ietf-ifmib-invstackmib-00.txt, "The Inverted Stack Table Extension 
-- to the Interfaces Group MIB", McCloghrie & Hanson, July 16 1998.
-- The table definition below is an interim solution, subject to
-- deprecation in favor of a standard solution should the Internet Draft
-- advance to Proposed Standard status.
-- 
rsIfInvStackTable  OBJECT-TYPE
     SYNTAX        SEQUENCE OF RsIfInvStackEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
            "A table containing information on the relationships between
            the multiple sub-layers of network interfaces.  In
            particular, it contains information on which sub-layers run
            'underneath' which other sub-layers, where each sub-layer
            corresponds to a conceptual row in the ifTable.  For
            example, when the sub-layer with ifIndex value x runs
            underneath the sub-layer with ifIndex value y, then this
            table contains:

              rsIfInvStackStatus.x.y=active

            For each ifIndex value, I, which identifies an active
            interface, there are always at least two instantiated rows
            in this table associated with I.  For one of these rows, I
            is the value of ifStackHigherLayer; for the other, I is the
            value of ifStackLowerLayer.  (If I is not involved in
            multiplexing, then these are the only two rows associated
            with I.)

            For example, two rows exist even for an interface which has
            no others stacked on top or below it:

              ifStackStatus.x.0=active
              ifStackStatus.0.x=active

            This table contains exactly the same number of rows as the
            ifStackTable, but the rows appear in a different order."
     ::= { rsIfObjects 2 }

rsIfInvStackEntry  OBJECT-TYPE
     SYNTAX        RsIfInvStackEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
            "Information on a particular relationship between two sub-
            layers, specifying that one sub-layer runs underneath the
            other sub-layer.  Each sub-layer corresponds to a conceptual
            row in the ifTable."
     INDEX { ifStackLowerLayer, ifStackHigherLayer }
     ::= { rsIfInvStackTable 1 }

RsIfInvStackEntry ::= SEQUENCE {
    rsIfInvStackStatus
        RowStatus
}

rsIfInvStackStatus  OBJECT-TYPE
    SYNTAX         RowStatus
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
            "The status of the relationship between two sub-layers.

            An instance of this object exists for each instance of the
            ifStackStatus object, and vice versa.  For example, if the
            variable ifStackStatus.H.L exists, then the variable
            rsIfInvStackStatus.L.H must also exist, and vice versa.  In
            addition, the two variables always have the same value.

            However, unlike ifStackStatus, the rsIfInvStackStatus object
            is NOT write-able.  A network management application wishing
            to change a relationship between sub-layers H and L cannot
            do so by modifying the value of rsIfInvStackStatus.L.H, but
            must instead modify the value of ifStackStatus.H.L.  After
            the ifStackTable is modified, the change will be reflected
            in this table."
    ::= { rsIfInvStackEntry 1 }

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Notification control objects
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- No notifications pertaining to generic interfaces are currently defined.



-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Notifications
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- No notifications pertaining to generic interfaces are currently defined.


-- The following two OBJECT IDENTIFIERS are used to define SNMPv2 
-- Notifications that are easily translated into SNMPv1 Traps.

-- rsIfTraps OBJECT IDENTIFIER ::= { rsIf 3 }
-- rsIfTrapPrefix OBJECT IDENTIFIER ::= { rsIfTraps 0 }



-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Conformance information
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsIfConformance OBJECT IDENTIFIER ::= { rsIf 4 }
rsIfCompliances OBJECT IDENTIFIER ::= { rsIfConformance 1 }
rsIfGroups      OBJECT IDENTIFIER ::= { rsIfConformance 2 }

-- compliance statements

rsIfCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for entities which implement
                the Redstone Generic Interfaces MIB."
        MODULE  -- this module
                MANDATORY-GROUPS { rsIfGroup, rsIfInvStackGroup }
        ::= { rsIfCompliances 1 }

-- units of conformance

rsIfGroup OBJECT-GROUP
        OBJECTS {
        rsIfType
        }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing management capability
                capability of generic interfaces in a Redstone product."
    ::= { rsIfGroups 1 }

rsIfInvStackGroup    OBJECT-GROUP
    OBJECTS { rsIfInvStackStatus }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing inverted information on
            the layering of MIB-II interfaces."
    ::= { rsIfGroups 2 }

END